Перейти к основному содержимому

⚙️ CI/CD и автоматизация сборок

🎯 Цель раздела

После изучения этого раздела вы:

  • поймёте, как устроен процесс CI/CD в экосистеме ROSA Linux;
  • узнаете, как автоматизировать сборку и публикацию пакетов;
  • научитесь использовать Automated Build Farm (ABF) для интеграции с Git;
  • сможете настраивать триггеры сборки и отслеживать статусы через веб-интерфейс.

🧩 Что такое CI/CD для RPM-пакетов

CI/CD (Continuous Integration / Continuous Delivery) в ROSA Linux — это автоматический процесс:

  1. проверки изменений в Git;
  2. сборки пакета;
  3. запуска тестов и линтеров;
  4. публикации RPM в репозитории ROSA.

Вся инфраструктура реализована через Automated Build Farm (ABF) — распределённую систему автоматической сборки и проверки.


🧱 Поток работы (Pipeline Overview)


Разработчик → Git push / Pull Request → ABF → Build → Test → Publish

Этапы:

  1. Push / Pull Request (PR) Отправка изменений в Git или создание PR в репозитории пакета на ABF.
  2. Сборка (Build) ABF автоматически создаёт SRPM и запускает сборку в изолированной среде.
  3. Проверка (Test & Lint) Выполняются rpmlint, unit-тесты, проверка зависимостей.
  4. Публикация (Publish) Готовые RPM попадают в репозиторий ROSA после успешного завершения пайплайна.

🚀 Автоматическая сборка при PR

Каждый Pull Request (PR) в репозиторий ABF может быть автоматически собран системой CI.

Для этого в .abf.yml указывается:

build:
distribution: rosa2024.1
arch:
- x86_64
- aarch64
ci: true

Когда PR создаётся, ABF:

  1. Проверяет изменения SPEC-файла;
  2. Генерирует SRPM;
  3. Запускает сборку в mock-подобной среде;
  4. Публикует лог сборки прямо в интерфейсе PR.

💡 Такой подход гарантирует, что каждая ветка и PR проходят тестовую сборку до вливания.


🧰 Управление сборками через CLI

ABF имеет REST API и CLI для управления сборками. Через CLI можно запускать, отменять или просматривать статус сборок:

abf build start hello.spec --branch update-1.2
abf build status 12345
abf build cancel 12345

⚙️ CLI-инструмент полезен для инженеров сопровождения, управляющих множеством пакетов.


📦 Публикация пакетов после сборки

После успешной сборки пакеты помещаются в:

https://abf-downloads.rosalinux.ru/<repo>/x86_64/

Репозиторий обновляется автоматически, и пакеты становятся доступными через dnf.

Проверка публикации:

dnf info hello

🧠 Использование тегов и релизов

Чтобы зафиксировать стабильную версию пакета, используйте теги:

git tag -a v1.2 -m "Stable release for ROSA 2024.1"
git push origin v1.2

🔖 ABF автоматически создаёт сборку для каждого нового тега — это упрощает релизный цикл и ведение changelog’ов.


⚙️ Мониторинг и логи в ABF

ABF предоставляет подробные логи и артефакты каждой сборки:

  • build.log — основной лог процесса;
  • root.log — информация о зависимостях и установке;
  • state.log — последовательность стадий сборки;
  • mock.cfg — конфигурация окружения.

Все они доступны через веб-интерфейс проекта на https://abf.rosalinux.ru.


🔄 Автоматизация повторных сборок

Для переcборки без изменения исходников можно использовать триггеры:

abf build restart <build_id>

Или через интерфейс ABF:

  • открыть нужный билд;
  • нажать Rebuild;
  • выбрать таргет (дистрибутив, архитектуру).

🧩 Интеграция с GitHub / внешними системами

ABF поддерживает Webhooks, которые позволяют интегрировать внешние Git-хостинги (например, GitHub или GitLab) для автоматического запуска сборок при PR или push.

Фрагмент .abf.yml:

hooks:
github:
enabled: true
on_push: true
on_pr: true

💡 Таким образом можно использовать ABF как backend для любых Git-проектов, требующих RPM-сборку.


🧠 Мини-тест для самопроверки

ВопросОтвет
Что означает CI/CD в контексте ROSA?Автоматическая сборка, тестирование и публикация пакетов
Какой файл управляет параметрами сборки ABF?.abf.yml
Что происходит при создании Pull Request в ABF?Автоматическая сборка и проверка пакета
Где хранятся логи сборок?На странице проекта ABF (build.log, root.log, state.log)
Как инициировать сборку вручную?Через CLI: abf build start <spec>

🧭 Итого

Теперь вы:

  • понимаете, как работает CI/CD в экосистеме ROSA;
  • умеете использовать ABF для автоматической сборки;
  • знаете, как работает интеграция с Git и PR-процесс;
  • готовы перейти к следующему этапу — сопровождению пакетов и выпуску обновлений.

Следующий документ — “Сопровождение и выпуск обновлений”, где будет рассмотрен цикл жизни пакета, обновления версий, changelog, и принципы долгосрочной поддержки (LTS).